package com.liugui.genericsandcollections;

/**
 * @ClassName: Test
 * @Author: liugui
 * @Date: 2020-10-26 16:09
 **/
/*
使用T代表类型，无论何时都没有比这更具体的类型来区分它。
如果有多个类型参数，我们可能使用字母表中T的临近的字母，比如S。
*/
class Test<T> {

    private T ob;

    public Test(T ob) {
        this.ob = ob;
    }

    public T getOb() {
        return ob;
    }

    public void setOb(T ob) {
        this.ob = ob;
    }


    public void showType() {
        System.out.println("T的实际类型是: " + ob.getClass().getName());
    }

}
public class TestDemo{
    public static void main(String[] args) {
        // 定义泛型类 Test 的一个Integer版本
        Test<Integer> intOb = new Test<>(88);
        intOb.showType();
        int i = intOb.getOb();
        System.out.println("value= " + i);
        System.out.println("----------------------------------");
        // 定义泛型类Test的一个String版本
        Test<String> strOb = new Test<>("Hello Gen!");
        strOb.showType();
        String s = strOb.getOb();
        System.out.println("value= " + s);
    }
}
